package com.siwei.mes.service.materials;

import com.github.pagehelper.PageInfo;
import com.siwei.mes.common.query.PageQuery;
import com.siwei.mes.entity.materials.Materials;

import java.util.List;

/**
 * 物料表(Materials)表服务接口
 *
 * @author linzi
 * @since 2023-11-27 22:46:47
 */
public interface MaterialsService {

    /**
     * 根据物料类型获取所有物料名称  可以不传
     *
     * @param materialType 物料类型
     * @return
     */
    List<String> getMaterialsNameByType(Long materialType);

    /**
     * 根据物料名称获取对应的物料规格
     *
     * @param materialName 物料名称
     * @param materialType 物料类型
     * @return
     */
    List<String> getMaterialsSpecs(String materialName, Long materialType);

    /**
     * 获取所有分页
     *
     * @param query
     * @return
     */
    PageInfo<Materials> getPage(PageQuery<Materials, Materials> query);

    /**
     * 设置材料及规格配置信息
     *
     * @param entity
     */
    void configSpecId(Materials entity);

    /**
     * 设置材料及规格配置信息
     *
     * @param entity
     */
    List<Materials> getAll(Materials entity);

    /**
     * 判断是否有这个物料信息 如果没有需要新增
     *
     * @param materialType 1-水泥 2-粉煤灰 3-矿渣粉 4-粗骨料 5-细骨料 6-外加剂 7-混凝土
     * @param materialName 物料名称
     * @param materialSpec 物料规格
     */
    Materials checkIsExist(Integer materialType, String materialName, String materialSpec);

    /**
     * 删除
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 根据物料名称+物料规格查询对应物料类型
     *
     * @param materialName 物料名称
     * @param materialSpec 物料规格
     * @return
     */
    Integer getMaterialsType(String materialName, String materialSpec);

    /**
     * 绑定配合比
     *
     * @param id    主键id
     * @param phbNo 配合比编号
     */
    void bindPhbNo(Long id, String phbNo);
}
